Contact centers, such as Automatic Call Distribution or ACD systems, are employed by many enterprises to service customer contacts. A typical contact center includes a switch and/or server to receive and route incoming packet-switched and/or circuit-switched contacts and one or more resources, such as human agents and automated resources (e.g., Interactive Voice Response (IVR) units), to service the incoming contacts. Contact centers distribute contacts, whether inbound or outbound, for servicing to any suitable resource according to predefined criteria.
Typically, when a contact enters a contact center, an IVR or content analyzer evaluates the content of the contact to determine the intent(s) defined by the contact's content. As used herein, “contact” or “interaction” refers to an atomic unit of work arriving at a contact center over a particular media channel or via implementation of a specific business process (activity), and an “intent” refers to a (typically detailed) topic of a particular customer escalated interaction. Normally, “intent” refers to at least a portion of the context defined by the contact's or interaction's content. An interaction may have one or more intents specified in its content. For example, a customer may send an email having a subject of “Lexus information needed” and a body (content) setting forth two questions, namely one asking about the price of a Lexus 470 and the other asking about the mileage per gallon of the RX-330. While the subject provides the topic (which is about the Lexus), analyzing the content leads to the more granular intent(s) (which are queries about two differing automotive models).
Content analyzers analyze content using natural language processing techniques. They determine the intent(s) defined by the content of an interaction and assign a percentage accuracy for each identified intent. They are generally neural network-based and may require supervised training as part of their tuning process. However, once tuned, the content analyzer can fairly accurately determine the intent(s) of complex contacts.
Once the intent for a particular contact has been determined, the contact center server analyzes the skill levels of agents that are currently available to handle the contact. If the contact is directed towards a relatively simple skill, then almost any agent working in the contact center should be able to successfully handle the instant contact. However, when a very complex contact enters the contact center, there may only be a couple of agents in the contact center that are qualified to handle the contact. Agent's qualifications are normally represented by skill levels of the agent maintained in a skill-to-agent or agent-to-skill mapping table. Agents may have multiple skills and thus are qualified to handle a larger number of contacts than an agent who only has one skill. “Skills” and “skill levels” are normally assigned based on agent performance in handling interactions, the subject matter that the agent deals with, the agent's competence in providing the end customer with the correct data, the time that the agent has spent resolving a particular interaction, customer feedback on the level of service provided by the agent, the agent's demonstrated expertise on a helper application and the agent's expertise/comfort handing interactions of a particular media (such as a voice call or chat message, etc). An agent moves up the levels of skill in a selected skill type and is qualified in differing types of skill in response to servicing interactions. To facilitate interaction processing, hunt groups or queues are often defined for each skill type, with agents having a selected skill being assigned to the corresponding hunt group of queue. The server determines, based on the identified intent(s) and analyzed content of the contact, what skills and/or corresponding skill levels are necessary to have the contact successfully resolved. These required skills and/or corresponding skill levels are compared against the skills and corresponding skill levels of the agents within the contact center. If there is an agent available that has the minimum necessary skills and corresponding skill levels to handle the contact, then the server routes the contact to that available agent for service. If the minimum skill level required for the contact is higher such that no available agents meet the minimum skill qualifications, then the contact is placed in one of the qualified agent's contact queues. This may ultimately lead to a long wait time for contacts requiring high skill levels.
One problem experienced in contact centers is the categorization of different skills in a manner that can then be used correctly to determine the actual skill level of the agent. A contact center manager is generally able to define only a finite number of “skills” into which all agents must fall. Because this is a manual process, it must be maintainable, thereby limiting the number of skills/skill levels that may be defined. This limitation means that the routing algorithm frequently has inaccurate or incomplete data in routing an interaction to an appropriate agent. Unless the skills are highly granularized, it is difficult to identify with certainty which agent has the actual skills. Accordingly, most of today's systems essentially rely on a “best-effort” determination of skills when making a routing decision (by hoping that hunt groups and queues defined are accurate enough).
Even if skills and skill levels can be defined with sufficient granularity, another problem with current contact centers is that contacts can only be assigned to agents based on the contact center's best available knowledge of the agent skills and/or skill levels. Unfortunately, these skill levels may not be truly representative of the actual capabilities of the agents. This occurs because the skill levels are typically determined and assigned by having a supervisor review the agent as they work. These “audits” are performed periodically to determine the current skill levels of agents in the contact center. To accurately audit an agent, a supervisor needs to observe the agent over the course of days, if not weeks. Spending this much time to determine skill levels of agents is not very efficient. The alternative is to observe an agent for a smaller amount of time like minutes or hours, and assume that a representative number of contacts involving a selected skill or skill level have been presented and resolved by the agent. More often than not, these audits do not accurately determine the actual skill types and skill levels of a particular agent. For example, if during the audit no contact were assigned to the agent relating to skill X, then the supervisor cannot award the agent points relating to skill X even though the agent might be able to successfully resolve a contact utilizing skill X. More so, it is extremely time consuming to have a supervisor continually auditing agents in an attempt to maintain updated skill levels for every agent.
There have been some attempts to solve this problem. Specifically, there are some methods that try to automatically measure an agent's skill levels. One such attempt utilizes metrics associated with certain tools that an agent might use to measure how skilled the agent is. Essentially, a soft skill is created by measuring an agent's ability with a tool used to handle contacts. These tool skills are then indirectly associated to contact required skills. This approach assumes that, if an agent is skilled with a particular tool, that agent is equally skilled at handling contacts that require that particular tool. For example, an agent's typing speed and search efficiency may be easily measured without human supervision. The assumption is that as the agent becomes faster at typing and more efficient during their key word searches then they are more skilled at handling any type of contact that requires these skills.
The problem with these existing solutions is that they attempt to make a hard determination about an agent's skills based on assumptions. These assumptions can break down in many circumstances. Consider an agent who is very good at key word searches relating to car insurance issues. This agent may have the highest possible skill level for searching, because he/she has been measured to resolve many car insurance issues quickly using the search tool. When a contact enters the contact center, and that contact is directed toward life insurance issues, the contact routing engine would probably assume that the agent who is very good at searching car insurance issues is also good at searching life insurance issues. This is not necessarily the case, as many differences exist between doing a life insurance issue search and a car insurance issue search. However, since the assumption is made between tool skills and actual skills, the contact routing engine will probably assign the contact to the skilled car insurance searcher when there may be a better life insurance searching agent available. This can lead to inefficiencies and confusion within the contact center because the agent's skills have been wrongfully assumed.
The real problem lies in trying to determine the true knowledge of an agent in a contact center, rather than trying to correlate soft skills (e.g., tool based skills) to actual agent knowledge. It is inaccurate to try and relate tool-based skills to knowledge-based skills, and the known methods of actually measuring knowledge-based skills are inefficient and costly. There exists a need for a method and system that automatically determines an agent's actual skill level with accuracy, and continually updates those skills so that the next incoming contact can be assigned to an agent based on the most up to date agent skill information.
Even if skills and skill levels were to be efficiently and effectively administered, contact center inefficiencies result from the contact center's failure to understand, on a real- or near real-time basis, what types of intents are being or have been serviced by another agent. When different agents handle interactions from different customers having similar intent, each agent may ultimately arrive at the same solution, with the interactions being serviced in a similar manner. Unfortunately, none of the agents have the knowledge that a similar issue was previously (or just) resolved by another agent and that the resolution might be identical to the one that a servicing agent is going to arrive at as that agent continues to work on an assigned interaction. Consider the following scenario where agents, at different sites, are assigned similar interactions. Agent A is assigned five emails while agent B is assigned three. As such, agent B reaches the email with similar intent before agent A and, after a few hours, performs the steps needed to research and resolve the email issue. Just before agent B has resolved the issue, agent A starts servicing the email with similar intent and does a manual search in the database to determine if there were any previous resolutions around the email topic. Finding none, agent A proceeds to research the issue. If agent B completes his email just after agent A has determined that there is no record of a similar issue resolution in the company's database, the contact center is confronted with a situation where agent B's resolution may be recorded, but agent A duplicates the entire work by researching and arriving with resolution steps that agent B has already identified. As can be seen from the above example, even if a search capability exists the search capability needs not only to be able to search for previous resolutions accurately but also to encompass unresolved interactions being handled by other agents when the search is being performed. The failure to provide an efficient and effective search capability can lead not only to less efficient utilization of contact center resources (by the need to “recreate the wheel”) but also to inconsistent results by different agents.